A veces es necesario convertir una tabla transversal (pivotante) en una plana. Este procedimiento se llama " enderezamiento de datos "
El programa LibreOffice Calc no tiene una funcionalidad estándar para convertir tablas dinámicas a " departamento ", pero puedes escribir tú mismo el procedimiento correspondiente. Veamos cómo hacerlo.
Miremos la imagen a continuación para comprender más claramente la esencia del problema. A la izquierda tenemos una tabla en forma de matriz (tabla dinámica) y a la derecha, una tabla normal con columnas (tabla plana):
Cuando expandes una tabla, descomprimes el par atributo-valor que es la intersección de las columnas en la tabla de matriz y las reorientas en las columnas aplanadas en la tabla plana:
Abra el menú Tools - Macros - Edit Macros..., seleccione Module1 y copie el siguiente texto en el módulo:
Sub UnPivotTable ' moonexcel.com.ua Dim oBook As Object Dim oActiveSheet As Object Dim oSelRange As Object Dim oNewSheet As Object Dim i As Long Dim iTopLabelRowCount As Integer Dim iSideLabelColCount As Integer oBook = ThisComponent oActiveSheet = oBook.CurrentController.ActiveSheet oSelRange = oBook.CurrentSelection ' Agregar una nueva hoja oBook.Sheets.insertNewByName("UnPivoted Table",0) oNewSheet = oBook.Sheets(0) ' Determinar el tamaño de los encabezados. iTopLabelRowCount = InputBox(" ¿Cuántas líneas hay en el encabezado superior? ") iSideLabelColCount = InputBox(" ¿Cuántas columnas hay en el encabezado lateral? ") i = 0 For r = (iTopLabelRowCount + 1) To oSelRange.Rows.Count For c = (iSideLabelColCount + 1) To oSelRange.Columns.Count For j = 1 To iSideLabelColCount oNewSheet.getCellByPosition(j-1, i).Formula = oSelRange.getCellByPosition(j-1, r-1).Formula Next j For k = 1 To iTopLabelRowCount oNewSheet.getCellByPosition(j + k - 2, i).Formula = oSelRange.getCellByPosition(c-1, k-1).Formula Next k oNewSheet.getCellByPosition(j + k - 2, i).Formula = oSelRange.getCellByPosition(c-1, r-1).Formula i = i + 1 Next c Next r End Sub
Luego, cierre Macro Editor y regrese a su hoja de trabajo en LibreOffice Calc. Seleccione toda la tabla con los encabezados superior e izquierdo y ejecute nuestra nueva macro a través del menú Tools - Macros - Run Macro...
La macro insertará una nueva hoja con nombre en su libro de trabajo.
También puedes usar la utilidad. "Tabla dinámica (Unpivot)" instalando la extensión YLC_Utilities.oxt .
Después de eso, esta utilidad estará disponible en todos los archivos que se abrirán en LibreOffice Calc.